package com.xspace.android.imcommon.utils;

import android.text.TextUtils;
import android.util.Log;

import com.xspace.android.xafcommon.util.LogUtil;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import java.util.HashMap;

public class XMLContentHandler extends DefaultHandler {
	private static final String LOGTAG = "XMLContentHandler";
	private HashMap<String, String> pushMap = new HashMap<String, String>();
	private String tagName = null;// 当前解析的元素标签
	private String key = "";
	private String value = "";
	@Override
	public void startDocument() throws SAXException {

	}
	public HashMap<String, String> getPush(){
		return pushMap;
	}

	// 接收元素开始的通知。当读到一个开始标签的时候，会触发这个方法。其中namespaceURI表示元素的命名空间；
	// localName表示元素的本地名称（不带前缀）；qName表示元素的限定名（带前缀）；atts 表示元素的属性集合
	@Override
	public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
		Log.d(LOGTAG, "-- localName:" + localName);
		this.tagName = localName;
	}

	// 接收字符数据的通知。该方法用来处理在XML文件中读到的内容，第一个参数用于存放文件的内容，
	// 后面两个参数是读到的字符串在这个数组中的起始位置和长度，使用new String(ch,start,length)就可以获取内容。
	@Override
	public void characters(char[] ch, int start, int length) throws SAXException {

		String data = new String(ch, start, length);
		if (tagName != null && data != null && !TextUtils.isEmpty(data.trim())) {
			if(!TextUtils.isEmpty(key)&&!TextUtils.isEmpty(value)){
				 key = "";
				 value = "";
			}
			Log.d(LOGTAG, "-- tagName:" + tagName + " -- data:" + data);
			//Log.i("push", "-- tagName:" + tagName + " -- data:" + data);
			if (tagName.equals("PushType")) {
				key = data;
			} else if (tagName.equals("ClassNameToAct")) {
				value = data;
			}
			//Log.i("push", "-- key:" + key + " -- value:" + value);
			if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) {
				pushMap.put(key, value);
			}
		}
	}

}
